import plugin from '../../../lib/plugins/plugin.js';
import fs from 'fs';
import path from 'path';  // 需要确保引入path模块
import puppeteer from "../../../lib/puppeteer/puppeteer.js";

/**
 * 插件管理类，继承自plugin基类
 */
export class plugins extends plugin {
    /**
     * 构造函数，初始化插件管理类
     */
    constructor() {
        super({
            name: "plugins", // 插件名称
            dsc: "", // 描述
            event: 'message', // 监听的事件类型
            priority: 200, // 事件优先级
            rule: [
                {
                    reg: "^#查看插件$",
                    fnc: "list_plugins"
                },
                // ...其他规则
            ]
        });
    }

    /**
     * 时间格式化函数
     * @param {Date} date - 需格式化的日期对象
     * @returns {string} 格式化后的日期字符串
     */
    formatDate(date) {
        const options = {
            year: 'numeric',
            month: '2-digit',
            day: '2-digit',
            hour: '2-digit',
            minute: '2-digit',
            hour12: false
        };
        return new Intl.DateTimeFormat('zh-CN', options).format(date).replace(/\//g, '-').replace(',', '');
    }

    /**
     * 列出所有插件
     * @param {Object} e - 事件对象
     */
    async list_plugins(e) {
        try {
            const patche = "plugins/";

            // 获取所有插件包
            const plugins = fs.readdirSync(patche).filter(file => fs.statSync(path.join(patche, file)).isDirectory())
                .map(dir => {
                    const stat = fs.statSync(path.join(patche, dir));
                    return {
                        name: dir,
                        installationTime: this.formatDate(stat.mtime), // 格式化安装时间
                    };
                });

            const JSpatche = "plugins/example/";
            const JSpugins = fs.readdirSync(JSpatche).filter(file => 
                fs.statSync(path.join(JSpatche, file)).isFile()
            ).map(file => {
                const stat = fs.statSync(path.join(JSpatche, file));
                return {
                    name: file,
                    installationTime: this.formatDate(stat.mtime), // 格式化安装时间
                };
            });

            // 动态导入所有插件
            const pluginPromises = JSpugins.map(async plugin => {
                const filePath = path.join(JSpatche, plugin.name);
                logger.info(filePath)
                try {
                    //const module = await import(filePath);
                    // const PluginClass = module.default || Object.values(module)[0]; // 获取第一个导出的类
                    // const instance = new PluginClass();
                    // return {
                    //     fileName: plugin.name,
                    //     installationTime: plugin.installationTime,
                    //     pluginName: instance.config ? instance.config.name : '未定义',
                    //     pluginDescription: instance.config ? instance.config.dsc : '未定义',
                    // };
                } catch (importError) {
                    // console.error(`导入插件 ${plugin.name} 失败:`, importError);
                    // return null; // 返回null以便过滤掉失败的插件
                }
            });

            // const pluginInfos = (await Promise.all(pluginPromises)).filter(info => info !== null);

            // // 打印所有插件的信息
            // pluginInfos.forEach(info => {
            //     logger.info(`文件名: ${info.fileName}, 安装时间: ${info.installationTime}, 插件名称: ${info.pluginName}, 插件描述: ${info.pluginDescription}`);
            // });

        } catch (error) {
            console.error('列表插件时发生错误:', error);
        }
    }
}
